package com.foruo.learn.stack;

/**
 * 逃逸分析
 * 当前环境时1.8_151 默认开启了逃逸分析 -XX:+DoEscapeAnalysis  (关闭就是把+改为-)
 * @author GaoYuan
 * @date 2018/7/4 上午8:38
 */
public class TestEscapeAnalysis {

    /** 执行只需5ms 栈上分配 没有发生逃逸，逃逸分析后，栈上分配 */
    public static void alloc() {
        byte[] b = new byte[2];
        b[0] = 1;
    }

    /** 执行需要 600ms 堆上分配 发生逃逸 b 可能被外部引用 */
//    static byte[] b = null;
//    public static void alloc() {
//        b = new byte[2];
//        b[0] = 1;
//    }

    public static void main(String[] args) {
        long b = System.currentTimeMillis();
        for (int i = 0; i < 100000000; i++) {
            alloc();
        }
        long e = System.currentTimeMillis();
        System.out.println(e - b);
    }
}
